package com.back.service;

import com.back.model.dto.hero.HeroAddRequest;
import com.back.model.dto.hero.HeroQueryRequest;
import com.back.model.dto.hero.HeroUpdateRequest;
import com.back.model.entity.Hero;
import com.back.model.vo.hero.HeroVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @description 针对表【Hero】的数据库操作Service
* @createDate 2025-09-12 09:23:53
*/
public interface HeroService extends IService<Hero> {

    /**
     * 添加英雄
     * @param heroAddRequest 英雄添加请求
     * @return 英雄ID
     */
    long addHero(HeroAddRequest heroAddRequest);

    /**
     * 删除英雄
     * @param id 英雄ID
     * @return 是否删除成功
     */
    boolean deleteHero(long id);

    /**
     * 更新英雄
     * @param heroUpdateRequest 英雄更新请求
     * @return 是否更新成功
     */
    boolean updateHero(HeroUpdateRequest heroUpdateRequest);

    /**
     * 根据ID获取英雄
     * @param id 英雄ID
     * @return 英雄VO
     */
    HeroVO getHeroVOById(long id);

    /**
     * 分页查询英雄列表
     * @param heroQueryRequest 查询请求
     * @return 英雄VO分页列表
     */
    IPage<HeroVO> listHeroVOByPage(HeroQueryRequest heroQueryRequest);

    /**
     * 获取所有英雄列表（用于前端展示）
     * @return 英雄VO列表
     */
    List<HeroVO> getAllHeroVOList();

    /**
     * 校验英雄信息
     * @param hero 英雄实体
     * @param add 是否为添加操作
     */
    void validHero(Hero hero, boolean add);

    /**
     * 获取英雄VO
     * @param hero 英雄实体
     * @return 英雄VO
     */
    HeroVO getHeroVO(Hero hero);

}
